package com.woniuxy.carlife.service;

import com.woniuxy.carlife.param.CouponParam;
import com.woniuxy.carlife.param.FindCouponParam;
import com.woniuxy.carlife.domain.Coupon;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author fx
 * @ClassName:CouponService
 * @Description: 优惠券service接口
 * @date 2021/4/6 20:00
 **/

public interface CouponService extends IService<Coupon> {

    /**
     * 功能描述〈新增优惠券〉
     * @author:fx
     * @param: @param null:
     * @return:
     * @Date 2021/4/8 18:44
     * @throws
     */
    int saveCoupon(CouponParam coupon);
    
    /**
     * 功能描述〈多条件查询符合条件的优惠券，优惠券id、类别名称、优惠金额、状态、库存量范围〉
     * @author:fx
     * @param: @param null: 
     * @return: 
     * @Date 2021/4/8 18:45
     * @throws
     */
    List<Coupon> findCouponByCondition(FindCouponParam couponParam);

    /**
     * 功能描述〈根据优惠券id修改库存量并同时判断修改优惠券状态和修改时间，只修改redis中的数据〉
     * @author:fx
     * @param: @param null:
     * @return:
     * @Date 2021/4/8 19:02
     * @throws
     */
    boolean updateCouponNumByCouponIdFromRedis(Integer id) throws Exception;

    /**
     * 功能描述〈定时修改优惠券库存量、状态、和修改时间，修改数据库〉
     * @author:fx
     * @param: @param null:
     * @return:
     * @Date 2021/4/8 19:10
     * @throws
     */
    boolean updateCouponNumByCouponIdToMySql();

    /**
     * 功能描述〈根据优惠券id查询详情〉
     * @author:fx
     * @param: @param null:
     * @return:
     * @Date 2021/4/12 18:57
     * @throws
     */
    Coupon findCouponInfoByCouponId(Integer couponId);
}
